package com.zhq.dao;

import com.zhq.bean.Courier;

import java.sql.Timestamp;
import java.util.List;
import java.util.Map;

/**
 * @Author:钟豪强
 * @Description:    和快递员操作相关的dao
 * @Date Created in  2020-08-14 22:48
 * @Modified By:
 */
public interface BaseCourierDao {
    /**
     * 用于查询数据库中快递员的数量(总数和新增)
     * @return  {size:总数,day:新增}
     */
    Map<String, Integer> console();

    /**
     * 用于查询所有快递员信息
     * @param limit 0代表分页(默认),1代表不分页
     * @param offset    表示SQL语句起始索引
     * @param pageNumber
     * @return
     */
    List<Courier> findAll(boolean limit, int offset, int pageNumber);

    /**
     * 根据快递员手机号码查找快递员信息
     * @param userPhone 快递员手机号码
     * @return 快递员信息
     */
    Courier findByUserPhone(String userPhone);

    /**
     * 根据快递员姓名查找快递员信息
     * @param username 快递员姓名
     * @return 快递员信息
     */
    Courier findByUserName(String username);

    /**
     *  用于添加快递员信息
     * @param username  快递员姓名
     * @param userPhone 快递员手机号
     * @param userNumber    快递员身份证
     * @param password  密码
     * @return  true代表添加成功
     */
    boolean insert(String username, String userPhone, String userNumber, String password);

    /**
     * 用于根据id修改快递员的派件总数
     * @param id      快递员id
     * @param expressNumber 快递员派件个数
     * @return  true代表修改成功
     */
    boolean updateExpressNumber(int id, int expressNumber);

    /**
     * 用于根据id,修改快递员信息
     * @param id   用户id
     * @param lastLoginTime   快递员上次在线时间
     * @return  返回true代表修改成功
     */
    boolean updateLastLoginTime(int id, Timestamp lastLoginTime);

    /**
     * 用于根据id,修改快递员信息
     * @param id   用户id
     * @param newCourier   新的快递员信息
     * @return  返回true代表修改成功
     */
    boolean update(int id, Courier newCourier);

    /**
     *  用于根据id,删除快递员信息
     * @param id 快递员id
     * @return  true代表修改成功
     */
    boolean delete(int id);

    /**
     * 快递员登录
     * @param username   快递员姓名
     * @param password   密码
     * @return  返回true代表登录成功
     */
    boolean login(String username, String password);
}
